<?php
/**
 * Implementa��o do padr�o DAO para a classe Servico.
 * Essas fun��es n�o devem ser chamadas diretamente, sendo seu uso feito via a classe Servico.
*/

if( !function_exists('__autoload') )
{
    function __autoload($class_name) {
    require_once $class_name . '.php';
    }
}

class ServicoDAO
{
	private $database;

	public function __construct( )
	{
		$this->database = DataAccess::getConnection();
	}
	
	public function Salvar( $servico )
	{
		$especificacao = urldecode($servico->especificacao);
		
		$consulta = $this->database->Fetch("BEGIN");
		
		if ( $consulta )
    	{
			$consulta = $this->database->Fetch(" INSERT INTO t_servico(
												 t_compra_id,
												 codigo,
												 especificacao)
												 VALUES(
												 $servico->compraId,
												 $servico->codigo,
												 '$especificacao') ");
    		if( $consulta )
            {
            	$consulta = $this->database->Fetch("COMMIT");
            	return TRUE;
            }
            else
            {
           		$consulta = $this->database->Fetch("ROLLBACK");
            	return FALSE;
            }
    	}
    	else
    	{
    		$consulta = $this->database->Fetch("ROLLBACK");
            return FALSE;
    	}

	}
	
	public function CarregarServicosPorProcesso( $processoId )
	{
		$consulta = $this->database->Fetch("SELECT * FROM t_servico WHERE t_compra_id = $processoId ");
		
		if( $consulta != FALSE and mysql_num_rows( $consulta ) > 0)
        {
            $resultado = $this->database->getRow();
            $objetos = Servico::ArrayParaObjetos( $resultado ); // transforma os registros retornados pela consulta em objetos
			
        	for( $i = 0; $i < count($objetos); $i++ )
			{
				$objetos[$i]->compraId = $processoId;
			}
			
			
            return $objetos;
		}
		else
			return FALSE;
	}
	
	public function CarregarServicoPorId( $servicoId )
	{
		$consulta = $this->database->Fetch("SELECT * FROM t_servico WHERE id = $servicoId ");
		
		if( $consulta != FALSE and mysql_num_rows( $consulta ) > 0)
        {
            $resultado = $this->database->getRow();
            $objetos = Servico::ArrayParaObjetos( $resultado ); // transforma os registros retornados pela consulta em objetos
			
        	return $objetos[0];
		}
		else
			return FALSE;
	}
	
	public function Atualizar( $servico )
	{
		$especificacao = urldecode($servico->especificacao);
		
		$consulta = $this->database->Fetch("BEGIN");
		
		if ( $consulta )
    	{
			$consulta = $this->database->Fetch("UPDATE t_servico 
												SET 
												t_compra_id = '$servico->compraId',
												codigo = '$servico->codigo',
												especificacao = '$especificacao'
												WHERE id = '$servico->id'");
    		if( $consulta )
            {
            	$consulta = $this->database->Fetch("COMMIT");
            	return TRUE;
            }
            else
            {
           		$consulta = $this->database->Fetch("ROLLBACK");
            	return FALSE;
            }
    	}
    	else
    	{
    		$consulta = $this->database->Fetch("ROLLBACK");
            return FALSE;
    	}
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	public function Remover( $servicoId )
	{
		$consulta = $this->database->Fetch("BEGIN");
		
		if( $consulta )
        {
           	$consulta = $this->database->Fetch("DELETE FROM t_servico WHERE id = $servicoId");

           	if( $consulta  )
            {
            	$consulta = $this->database->Fetch("COMMIT");
            	return TRUE;
            }
            else
            {
            	$consulta = $this->database->Fetch("ROLLBACK");
            	return FALSE;
            }
        }
    	else
        {
           	$consulta = $this->database->Fetch("ROLLBACK");
           	return FALSE;
        }

	}
	
}

?>